其他
开发一个简单的工作流引擎
点击关注下方公众号,编程资料 都在这里
# 第1关
按顺序添加任意个审批人组成一个链表,最后加一个结束节点 记录当前审批人,当审批完后,审批人向后移动一位 当审批人对应结束节点时,流程结束
# 第2关
把节点分为两大类:简单节点(上图中长方形)和复杂节点(上图中圆形)。 用一棵树表示整个流程,其中叶子节点都是简单节点,简单节点都是叶子节点。 每个简单节点里都有且仅有有一个审批人。 复杂节点包含若干个子节点。 加入会签节点: 会签节点激活后,所有的子节点都可以审批,当所有的子节点都审批完毕后,会签节点完成。 加入串行节点:子节点只能从左到右依次进行审批,当最后一个子节点审批完成后,串行节点完成。 所有的工作流最外层都是一个串行节点,该节点完成后代表整个工作流完成。
Ready: 可以进行审批操作的简单节点是Ready状态。 Complete: 已经审批完成的节点状态。 Future: 现在还没有走到的节点状态。 Waiting: 只有复杂节点有该状态,表示在等待子节点审批。
# 第3关
并行节点是一个复杂节点,该节点激活时,任何一个子节点都可以进行审批,且任何一个子节点是完成状态时,该节点完成。
当一个并行节点的子节点状态为非(Ready, Waiting)时,其它兄弟节点及其子节点的状态被置为Skip。
# 第4关
能无限扩展的树形结构可以支持任意复杂流程。
# 第5关
条件节点类似并行节点,只不过只有满足条件的子节点才能进入接下来的审批。
# 第6关
第一种:审批人是写死的。 第二种:审批人从表单中读取。 第三种:根据发起人和一个映射函数,算出审批人。比如 get_主管("钱某") 得到钱某的主管 李某。
# 第7关
只有Ready状态的节点有权利驳回。(就像只有Ready状态的节点有权利审批一样)
# 第8关
# 第9关
不断的驳回上一级,直到Ready状态的节点包含要驳回到的节点为止。
# 第10关
# 第11关
代理操作的本质是,新建一个并行节点作为本节点的父节点,再新建一个兄弟节点放代理人,这样自己和代理人都能审批通过。 代理操作可以无限嵌套,即代理人也可以找人代理。
# 第12关
取消代理是代理的逆操作 如果代理人审批过了那就不能取消代理
# 第13关
# 第14关
工作流完成的百分比指的是树中最右侧Ready状态的节点到最左侧节点的距离 / 最右侧节点的距离。
# 第15关
# 后记
点个在看你最好看